package 简单.模拟;

/**
 * 给你一个字符串 s，请你返回 两个相同字符之间的最长子字符串的长度 ，
 * 计算长度时不含这两个字符。如果不存在这样的子字符串，返回 -1 。
 * 子字符串 是字符串中的一个连续字符序列。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/largest-substring-between-two-equal-characters
 */
public class 两个相同字符之间的最长子字符串_1642 {

    public static void main(String[] args) {

    }

    /**
     * 第一次出现的字符总是该字符最长字符串的起始位置
     *
     * @param s
     * @return
     */
    public int maxLengthBetweenEqualCharacters(String s) {
        int maxLen = -1;
        Integer[] record = new Integer[26];

        for (int i = 0; i < s.length(); i++) {
            int idx = s.charAt(i) - 'a';
            if (record[idx] == null) {
                record[idx] = i;
            } else {
                maxLen = Math.max(maxLen, i - record[idx] - 1);
            }
        }
        return maxLen;
    }

}
